💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    29 데이터 분석 시각화 인터랙티브 시각화 툴 plotly | ✅ 저자: 이유정(박사)

    Plotly https://plotly.com/python/

    인터랙티브 시각화란?

    • 데이터를 단순히 보기 좋게 표현하는 것에서 나아가,
    • 사용자가 마우스로 클릭하거나, 확대/축소하고, 값을 확인할 수 있는 동적인 시각화 방식이에요.
    • 예: 꺾은선 그래프 위에 마우스를 올리면 해당 값이 팝업으로 보임.

    인터랙티브 시각화를 위한 Plotly 설치

    pip install plotly
    

    Plotly란?

    • 파이썬 기반의 인터랙티브 시각화 라이브러리예요.
    • Matplotlib, Seaborn처럼 정적인 이미지로 출력되는 시각화와는 달리,
    • Plotly는 HTML 기반의 그래프를 만들어 브라우저에서 직접 조작할 수 있어요.

    인터랙티브 꺽은선 그래프:

    import plotly.express as px
    data = [1, 2, 3, 4, 5]
    
    # 간단한 꺾은선 그래프 생성
    fig = px.line(data, title='Simple Line Plot') 
    
    fig.show() # 브라우저에서 인터랙티브 그래프를 보여줌
    

    막대 그래프 (Bar Chart)

    import plotly.express as px
    
    # 데이터 불러오기
    df = pd.read_csv("csv_files/employees_data.csv")
    
    # 카테고리별 평균 급여 계산
    category_salary = df.groupby("category")["salary"].mean().reset_index()
    
    # 막대 그래프 생성
    fig = px.bar(category_salary, x="category", y="salary", 
                 title="카테고리별 평균 급여", 
                 labels={"salary": "평균 급여", "category": "카테고리"})
    
    fig.show()
    

    산점도 (Scatter Plot)

    import plotly.express as px
    import pandas as pd
    
    # 데이터 불러오기
    df = pd.read_csv("csv_files/employees_data.csv")
    
    # 산점도 생성
    fig = px.scatter(df, x="age", y="salary", color="category", 
                     hover_data=["id", "score", "on_leave"],
                     title="나이와 급여의 관계 (카테고리별 색상 구분)")
    
    fig.show()
    

    히스토그램 (Histogram)

    import plotly.express as px
    
    # 데이터 불러오기
    df = pd.read_csv("csv_files/employees_data.csv")
    
    fig = px.histogram(df, x="salary", nbins=30, 
                       title="전체 급여 분포", 
                       labels={"salary": "급여"})
    
    fig.show()
    

    상자그림 (Box Plot)

    import plotly.express as px
    
    # 데이터 불러오기
    df = pd.read_csv("csv_files/employees_data.csv")
    
    fig = px.box(df, x="category", y="salary", color="category", 
                 title="카테고리별 급여 분포 (Box Plot)")
    
    fig.show()
    

    버블 차트 (Bubble Chart)

    import plotly.express as px
    df = px.data.gapminder().query("year == 2007")
    
    fig = px.scatter(df, x="gdpPercap", y="lifeExp", size="pop", color="continent",
                     hover_name="country", log_x=True, size_max=60,
                     title="2007년 국가별 GDP vs 기대수명 (버블 크기 = 인구수)")
    fig.show()
    

    파이 차트 (Pie Chart)

    import plotly.express as px
    # 데이터 불러오기
    df = pd.read_csv("csv_files/employees_data.csv")
    
    on_leave_counts = df["on_leave"].value_counts().reset_index()
    on_leave_counts.columns = ["on_leave", "count"]
    
    fig = px.pie(on_leave_counts, values="count", names="on_leave", 
                 title="휴가 여부 비율")
    
    fig.show()
    

    애니메이션 (Animated Bubble Chart)

    import plotly.express as px
    df = px.data.gapminder()
    
    fig = px.scatter(df, x="gdpPercap", y="lifeExp", animation_frame="year",
                     animation_group="country", size="pop", color="continent",
                     hover_name="country", log_x=True, size_max=60,
                     title="연도별 전세계 GDP와 기대수명 추이")
    fig.show()
    
    TOP
    preload preload